package com.ruoyi.develop.projectBaseInfo.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.develop.goodsOrderIn.domain.GoodsOrderIn;
import com.ruoyi.develop.goodsSale.domain.GoodsSale;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.develop.project.domain.Project;

/**
 * 项目基础信息管理对象 project_base_info
 *
 * @author qh
 * @date 2023-01-10
 */
public class ProjectBaseInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    //overView 内容 : 项目《项目名称》创建于《创建时间》，负责人为《负责人姓名》，客户为《客户名称》，
    // 项目金额《》，审计后金额《》项目已开票《N张》开票金额《》项目已回款金额《》未回款金额《》项目发生费用金额《》项目采购商品《M种》采购金额《》
    // 合同签订日期《》项目验收日期《》质保金额《》质保金到期日期《》该项目《是否验收》该项目《是否回款完毕》项目备注信息《》

    /**
     * 主键
     */
    private String id;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;


    /**
     * 项目id
     */

    private String projectId;

    /**
     * 项目框架号
     */

    private String projectCode;

    /**
     * 项目
     */
    private Project  project;


    /**
     * 工程名称
     */
    @Excel(name = "工程名称")
    private String name;



    /**
     * 买方
     */
    @Excel(name = "买方")
    private String customId;

    /**
     * 买方名称
     */
    @Excel(name = "买方名称")
    private String customName;

    /**
     * 买方编码
     */
    @Excel(name = "买方编码")
    private String customerCode;

    /**
     * 项目单位Id
     */
    @Excel(name = "项目单位Id")
    private String companyId;

    /**
     * 项目单位名称
     */
    @Excel(name = "项目单位名称")
    private String companyName;

    /**
     * 合同签订日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "合同签订日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractDate;

    /**
     * 合同金额
     */
    @Excel(name = "合同金额")
    private BigDecimal contractMoney;

    /**
     * 实际金额
     */
    @Excel(name = "实际金额")
    private BigDecimal actualMoney;


    /**
     * 铁件重量
     */
    @Excel(name = "铁件重量")
    private BigDecimal weight;

    /**
     * 单价
     */
    @Excel(name = "铁件")
    private BigDecimal ironUnitPrice;
    @Excel(name = "含税单价")
    private BigDecimal ironTaxUnitPrice;

    @Excel(name = "铁件含税总价")
    private BigDecimal ironTotalPrice;

    @Excel(name = "含税总价")
    private BigDecimal ironTaxTotalPrice;


    /**
     * 开票日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date invoicingTime;

    /**
     * 合同交货时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "合同交货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deliveryTime;


    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "回款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;


    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "下单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date orderDate;

    @Excel(name = "开票单位编码")
    private String taxcode;
    /**
     * 是否回款完毕
     */
    @Excel(name = "是否回款完毕")
    private String fundCallback;

    /**
     * 备注信息
     */
    @Excel(name = "备注信息")
    private String information;

    /**
     * 项目总览
     */
    private String overView;

    @Excel(name = "商品id")
    private String saleId;
    private List<GoodsSale> columns;

    /*回款金额*/
    private BigDecimal backMoney;
    /*剩余回款*/
    private BigDecimal remainMoney;
    private BigDecimal feeMoney;
    private BigDecimal saleMoney;
    private BigDecimal buyMoney;
    private BigDecimal profitMoney;
    /** 开票总金额 */
    private BigDecimal taxAll;
     /** 开票金额 （没存数据库）*/
    private BigDecimal taxAmount;
    /** 开票剩余金额 */
    private BigDecimal taxRemain;
    /** 开票状态 */
    private String taxStatus;

    private String year;
    private String deptId;
    private String deptName;

    private String addr;
    private String ghcode;
    private String kpname;
    private String kpcode;

    /**
     * 订单编号
     */
    private String code;

    private String idx;
    private String contractDateStr;
    private String customSimple;
    private String contractMoneyStr;
    private String status;
    private String source;
    private String count;
    private String money;

    public String getMoney() {
        return money;
    }

    public void setMoney(String money) {
        this.money = money;
    }

    public String getCount() {
        return count;
    }

    public void setCount(String count) {
        this.count = count;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    /**
     * 订单类别
     */
    @Excel(name = "订单类别")
    private String goodsType;

    /**
     * 业务员id
     */
    @Excel(name = "业务员id")
    private String salesmanId;

    /**
     * 业务员姓名
     */
    @Excel(name = "业务员姓名")
    private String salesmanName;

    /**
     * 制单人
     */
    @Excel(name = "制单人")
    private String createName;

    /**
     * 所属地区
     */
    @Excel(name = "所属地区")
    private String area;

    /**
     * 回款天数
     */
    private int returnDays;


    /**
     * 提成计算状态
     */
    private String commissionStatus;


    /** * 附件 */
    private String attachment;

    /** * 合同收货人 */
    private String deliveryPerson;

    /** * 合同收货人 */
    private String deliveryPersonTel;

    private String version;

    /** * 工程名称 */
    private String gongchengName;

    /** * 是否关闭 */
    private String isClosed;

    public String getIsClosed() {
        return isClosed;
    }

    public void setIsClosed(String isClosed) {
        this.isClosed = isClosed;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getDeliveryPersonTel() {
        return deliveryPersonTel;
    }

    public String getGongchengName() {
        return gongchengName;
    }

    public void setGongchengName(String gongchengName) {
        this.gongchengName = gongchengName;
    }

    public void setDeliveryPersonTel(String deliveryPersonTel) {
        this.deliveryPersonTel = deliveryPersonTel;
    }

    public String getDeliveryPerson() {
        return deliveryPerson;
    }

    public void setDeliveryPerson(String deliveryPerson) {
        this.deliveryPerson = deliveryPerson;
    }

    public String getAttachment() {
        return attachment;
    }

    public void setAttachment(String attachment) {
        this.attachment = attachment;
    }

    public String getCommissionStatus() {
        return commissionStatus;
    }

    public void setCommissionStatus(String commissionStatus) {
        this.commissionStatus = commissionStatus;
    }

    public int getReturnDays() {
        return returnDays;
    }

    public void setReturnDays(int returnDays) {
        this.returnDays = returnDays;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    private GoodsOrderIn goods;

    public GoodsOrderIn getGoods() {
        return goods;
    }

    public void setGoods(GoodsOrderIn goods) {
        this.goods = goods;
    }

    public String getCreateName() {
        return createName;
    }

    public void setCreateName(String createName) {
        this.createName = createName;
    }

    public String getSalesmanId() {
        return salesmanId;
    }

    public void setSalesmanId(String salesmanId) {
        this.salesmanId = salesmanId;
    }

    public String getSalesmanName() {
        return salesmanName;
    }

    public void setSalesmanName(String salesmanName) {
        this.salesmanName = salesmanName;
    }

    public String getGoodsType() {
        return goodsType;
    }

    public void setGoodsType(String goodsType) {
        this.goodsType = goodsType;
    }

    public Date getInvoicingTime() {
        return invoicingTime;
    }

    public void setInvoicingTime(Date invoicingTime) {
        this.invoicingTime = invoicingTime;
    }

    public Date getDeliveryTime() {
        return deliveryTime;
    }

    public void setDeliveryTime(Date deliveryTime) {
        this.deliveryTime = deliveryTime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getTaxcode() {
        return taxcode;
    }

    public void setTaxcode(String taxcode) {
        this.taxcode = taxcode;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getContractMoneyStr() {
        return contractMoneyStr;
    }

    public void setContractMoneyStr(String contractMoneyStr) {
        this.contractMoneyStr = contractMoneyStr;
    }

    public String getCustomSimple() {
        return customSimple;
    }

    public void setCustomSimple(String customSimple) {
        this.customSimple = customSimple;
    }

    public String getCode() {
        return code;
    }

    public Date getOrderDate() {
        return orderDate;
    }

    public void setOrderDate(Date orderDate) {
        this.orderDate = orderDate;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getContractDateStr() {
        return contractDateStr;
    }

    public void setContractDateStr(String contractDateStr) {
        this.contractDateStr = contractDateStr;
    }

    public String getIdx() {
        return idx;
    }

    public void setIdx(String idx) {
        this.idx = idx;
    }


    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public String getGhcode() {
        return ghcode;
    }

    public void setGhcode(String ghcode) {
        this.ghcode = ghcode;
    }

    public String getKpname() {
        return kpname;
    }

    public void setKpname(String kpname) {
        this.kpname = kpname;
    }

    public String getKpcode() {
        return kpcode;
    }

    public void setKpcode(String kpcode) {
        this.kpcode = kpcode;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public String getYear() {
        return year;
    }

    public void setYear(String year) {
        this.year = year;
    }

    public String getDeptId() {
        return deptId;
    }

    public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public BigDecimal getBuyMoney() {
        return buyMoney;
    }

    public void setBuyMoney(BigDecimal buyMoney) {
        this.buyMoney = buyMoney;
    }

    public BigDecimal getSaleMoney() {
        return saleMoney;
    }

    public void setSaleMoney(BigDecimal saleMoney) {
        this.saleMoney = saleMoney;
    }

    public BigDecimal getProfitMoney() {
        return profitMoney;
    }

    public void setProfitMoney(BigDecimal profitMoney) {
        this.profitMoney = profitMoney;
    }

    public BigDecimal getFeeMoney() {
        return feeMoney;
    }

    public void setFeeMoney(BigDecimal feeMoney) {
        this.feeMoney = feeMoney;
    }

    public BigDecimal getTaxAll() {
        return taxAll;
    }

    public void setTaxAll(BigDecimal taxAll) {
        this.taxAll = taxAll;
    }

    public BigDecimal getTaxRemain() {
        return taxRemain;
    }

    public void setTaxRemain(BigDecimal taxRemain) {
        this.taxRemain = taxRemain;
    }

    public String getTaxStatus() {
        return taxStatus;
    }

    public void setTaxStatus(String taxStatus) {
        this.taxStatus = taxStatus;
    }

    public BigDecimal getBackMoney() {
        return backMoney;
    }

    public void setBackMoney(BigDecimal backMoney) {
        this.backMoney = backMoney;
    }

    public BigDecimal getRemainMoney() {
        return remainMoney;
    }

    public void setRemainMoney(BigDecimal remainMoney) {
        this.remainMoney = remainMoney;
    }

    public List<GoodsSale> getColumns() {
        return columns;
    }

    public void setColumns(List<GoodsSale> columns) {
        this.columns = columns;
    }

    public String getSaleId() {
        return saleId;
    }

    public void setSaleId(String saleId) {
        this.saleId = saleId;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }


    public void setCustomId(String customId) {
        this.customId = customId;
    }

    public String getCustomId() {
        return customId;
    }

    public void setCustomName(String customName) {
        this.customName = customName;
    }

    public String getCustomName() {
        return customName;
    }

    public String getCompanyId() {
        return companyId;
    }

    public void setCompanyId(String companyId) {
        this.companyId = companyId;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setContractDate(Date contractDate) {
        this.contractDate = contractDate;
    }

    public Date getContractDate() {
        return contractDate;
    }

    public void setContractMoney(BigDecimal contractMoney) {
        this.contractMoney = contractMoney;
    }

    public BigDecimal getContractMoney() {
        return contractMoney;
    }


    public void setFundCallback(String fundCallback) {
        this.fundCallback = fundCallback;
    }

    public String getFundCallback() {
        return fundCallback;
    }


    public String getOverView() {
        return overView;
    }

    public void setOverView(String overView) {
        this.overView = overView;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    public String getInformation() {
        return information;
    }

    public void setInformation(String information) {
        this.information = information;
    }

    public String getCustomerCode() {
        return customerCode;
    }

    public void setCustomerCode(String customerCode) {
        this.customerCode = customerCode;
    }

    public BigDecimal getWeight() {
        return weight;
    }

    public void setWeight(BigDecimal weight) {
        this.weight = weight;
    }

    public BigDecimal getIronUnitPrice() {
        return ironUnitPrice;
    }

    public void setIronUnitPrice(BigDecimal ironUnitPrice) {
        this.ironUnitPrice = ironUnitPrice;
    }

    public BigDecimal getIronTaxUnitPrice() {
        return ironTaxUnitPrice;
    }

    public void setIronTaxUnitPrice(BigDecimal ironTaxUnitPrice) {
        this.ironTaxUnitPrice = ironTaxUnitPrice;
    }

    public BigDecimal getIronTotalPrice() {
        return ironTotalPrice;
    }

    public void setIronTotalPrice(BigDecimal ironTotalPrice) {
        this.ironTotalPrice = ironTotalPrice;
    }

    public BigDecimal getIronTaxTotalPrice() {
        return ironTaxTotalPrice;
    }

    public void setIronTaxTotalPrice(BigDecimal ironTaxTotalPrice) {
        this.ironTaxTotalPrice = ironTaxTotalPrice;
    }
    public BigDecimal getTaxAmount() { return taxAmount; }
    public void setTaxAmount(BigDecimal taxAmount) { this.taxAmount = taxAmount; }

    public BigDecimal getActualMoney() {
        return actualMoney;
    }

    public void setActualMoney(BigDecimal actualMoney) {
        this.actualMoney = actualMoney;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("name", getName())
                .append("customId", getCustomId())
                .append("customName", getCustomName())
                .append("companyName", getCompanyName())
                .append("contractDate", getContractDate())
                .append("contractMoney", getContractMoney())
                .append("fundCallback", getFundCallback())
                .toString();
    }
}
